﻿Imports System.Text
Public Class frmCelular
    Inherits formPadrao

    Dim Sep As Char
    Dim Nombre As Double
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private tipoAvaliacao As String




    Public Property getUcPreambulo() As ucPreambulo
        Get
            Return ucPreambulo
        End Get
        Set(ByVal value As ucPreambulo)
            ucPreambulo = value
        End Set
    End Property



    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()
        pnlDados.Controls.Add(ucPreambulo)
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True
            pnlItens.AutoSize = True
            Me.AutoScroll = True


        End If
    End Sub


    Private Sub frmAvaliacao_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try

            Dim calibreBO As New calibreBO
            Dim tipoArmabo As New tipo_armaBO


            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlDados)
            generica.redimensionaControle(pnlItens)
            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = ucPreambulo.ID_TIPO_PERICIA

            ucPreambulo.lblTitulo.Text = "TRANSCRIÇÃO DE CONTEÚDO DE CELULAR"
            ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
            ucPreambulo.pnlNatureza.Enabled = False

            Me.ControlBox = False
            If generica.gravaBanco Then
                ucPreambulo.btnBuscaLaudo.Enabled = True
            Else
                ucPreambulo.btnBuscaLaudo.Enabled = False
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------


    Private Sub geraLaudo()

        generica.tempo = Now
        Dim oWordTemp As New WordAppl
        Dim total As Double = 0
        Dim registroBo As New registroBO
        Dim regBO As New registroBO
        Dim tabelaAparelho As New DataTable
       
        '------------------------------------------------------------------------
        ' PEGA OS DADOS DO APARELHO GERADOS PELO MOBILE EDIT FORENSICGeneric
        '-----------------------------------------------------------------------
        tabelaAparelho = generica.returnDataTableCelular(txtXMLTelefone.Text, "Generic", 2)
        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            pb.zeraContador()
            pb.stepBarra(5)
            pb.Visible = True
            pb.stepBarra(5)
            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            Try

                If generica.gravaBanco Then
                    pb.stepBarra(5)

                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(5)

                    Dim provas As New StringBuilder
                    Dim textoProva As String = String.Empty

                    provas.Append("Um celular ").Append(tabelaAparelho.Rows(0).Item(1).ToString).Append(",modelo ").Append(tabelaAparelho.Rows(1).Item(1).ToString).Append(" IMEI:").Append(tabelaAparelho.Rows(2).Item(1).ToString)

                    If provas.ToString.Length > 250 Then
                        textoProva = provas.ToString.Substring(0, 250)
                    Else
                        textoProva = provas.ToString
                    End If

                    pb.stepBarra(5)

                    Dim registroGravado As Integer

                    '---------------------------------------------------------------------------------
                    'VERIFICA SE O REGISTRO ESTÁ BLOQUEADO POR OUTRO USUÁRIO
                    '--------------------------------------------------------------------------------


                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then

                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "VISTORIA CELULAR " & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                               textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(5)
                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO
                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If
                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "TRANSCRICAO CELULAR " & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)
                        registroGravado = regBO.insereRegistro(reg)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(5)
                    End If
                    pb.stepBarra(5)
                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '------------------------------------------------------------------------------------

                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    If ucPreambulo.ehNovo Then
                        With pontuacao
                            .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                            .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                            .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                            .TIPO_OCORRENCIA = "ATENDIMENTO"
                            .DATA_ALTERACAO = Now
                        End With

                        i = pontuacaobo.inserePontuacao(pontuacao)

                    Else
                        i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                    End If

                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If

            Catch ex As Exception
                generica.encerraProcessosWord()
                habilita(False, False, False, False)
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
                oWordTemp.OpenModelo("celular.dot")
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing

                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
                '------------------------------------------------------------------------
                ' DADOS DO CELULAR
                '-----------------------------------------------------------------------
                pb.stepBarra(5, "Inserindo dados do celular")
                oWord.FindAndReplacement("<<marca>>", tabelaAparelho.Rows(0).Item(2).ToString)
                oWord.FindAndReplacement("<<modelo>>", tabelaAparelho.Rows(1).Item(2).ToString)
                oWord.FindAndReplacement("<<IMEI>>", tabelaAparelho.Rows(2).Item(2).ToString)
                oWord.FindAndReplacement("<<bateria>>", txtBateria.Text)
                oWord.FindAndReplacement("<<estado>>", cmbEstado.Text.ToLower)
                oWord.FindAndReplacement("<<operadora>>", cmbOperadora.Text)
                oWord.FindAndReplacement("<<chip>>", txtNumeroChip.Text)
                oWord.FindAndReplacement("<<linha>>", txtLinha.Text)

                '------------------------------------------------------------------------
                ' CHAMA EVENTO PARA POPULAR AGENDA TELEFONICA DO APARELHO
                '------------------------------------------------------------------------

                Dim tbl As New System.Data.DataTable

                tbl = generica.returnDataTableCelular(txtXMLTelefone.Text, "Phonebook", 8)
                pb.stepBarra(5, "Inserindo dados da agenda do telefone")

                If tbl.Rows.Count <= 0 Then
                    oWord.FindAndReplacement("<<textoAgenda>>", "Não foram encontrados contatos na agenda do aparelho.")

                Else
                    oWord.FindAndReplacement("<<textoAgenda>>", "A agenda Telefônica apresentava os seguintes nomes e números relacionados abaixo:")
                    oWord.geraContatos(tbl, 2)
                End If

                tbl = New System.Data.DataTable

                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR AGENDA TELEFONICA DO CHIP
                ''------------------------------------------------------------------------
                If Not txtXMLChip.Text.Equals(String.Empty) Then

                    tbl = generica.returnDataTableCelular(txtXMLChip.Text, "Phonebook", 8)
                    pb.stepBarra(5, "Inserindo dados da agenda do chip")

                    If tbl.Rows.Count <= 0 Then
                        oWord.FindAndReplacement("<<textoChip>>", "Não foram encontrados contatos na agenda do aparelho.")

                    Else
                        oWord.FindAndReplacement("<<textoChip>>", "A agenda Telefônica apresentava os seguintes nomes e números relacionados abaixo:")
                        oWord.geraContatos(tbl, 3)
                    End If

                Else
                    oWord.FindAndReplacement("<<textoChip>>", "Não foram encontrados contatos na agenda do aparelho.")

                End If


                tbl = New System.Data.DataTable

                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR MENSAGENS RECEBIDAS DO APARELHO
                ''------------------------------------------------------------------------

                tbl = generica.returnDataTableCelular(txtXMLTelefone.Text, "Inbox", 5)
                pb.stepBarra(5, "Inserindo mensagens encontradas no aparelho")

                If tbl.Rows.Count <= 0 Then
                    oWord.FindAndReplacement("<<textoMensagensAparelho>>", "Não foram encontrados mensagens na caixa de entrada do aparelho.")
                Else
                    oWord.FindAndReplacement("<<textoMensagensAparelho>>", "O aparelho apresentava as seguintes mensagens na caixa de entrada:")
                    oWord.geraMensagens(tbl, 4)
                End If
                tbl = New System.Data.DataTable

                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR MENSAGENS RECEBIDAS ARMAZENADAS NO CHIP
                ''------------------------------------------------------------------------

                If Not txtXMLChip.Text.Equals(String.Empty) Then
                    tbl = generica.returnDataTableCelular(txtXMLChip.Text, "Inbox", 5)
                    pb.stepBarra(5, "Inserindo mensagens encontradas no chip do aparelho")
                    If tbl.Rows.Count <= 0 Then
                        oWord.FindAndReplacement("<<textoMensagensChip>>", "Não foram encontrados mensagens na caixa de entrada do aparelho.")
                    Else
                        oWord.FindAndReplacement("<<textoMensagensChip>>", "O aparelho apresentava as seguintes mensagens na caixa de entrada:")
                        oWord.geraMensagens(tbl, 5)
                    End If
                Else
                    oWord.FindAndReplacement("<<textoMensagensChip>>", "Não foram encontrados mensagens na caixa de entrada do aparelho.")
                End If
                tbl = New System.Data.DataTable
                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR CHAMADAS REALIZADAS REGISTRADAS NO APARELHO
                ''------------------------------------------------------------------------

                tbl = generica.returnDataTableCelular(txtXMLTelefone.Text, "Last Dialed Numbers", 10)
                pb.stepBarra(5, "Inserindo dados chamadas realizadas encontradas no aparelho")

                If tbl.Rows.Count <= 0 Then
                    oWord.FindAndReplacement("<<textoChamadasRealizadas>>", "A lista das chamadas realizadas encontrava-se vazia.")
                Else
                    oWord.FindAndReplacement("<<textoChamadasRealizadas>>", "O aparelho apresentava as seguintes chamadas:")
                    oWord.geraChamadas(tbl, 6)
                End If
                tbl = New System.Data.DataTable

                If Not txtXMLChip.Text.Equals(String.Empty) Then
                    pb.stepBarra(5, "Inserindo dados chamadas realizadas encontradas no chip")
                    tbl = generica.returnDataTableCelular(txtXMLChip.Text, "Last Dialed Numbers", 10)

                    If tbl.Rows.Count <= 0 Then
                        oWord.FindAndReplacement("<<textoChamadasRealizadasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")
                    Else
                        oWord.FindAndReplacement("<<textoChamadasRealizadasChip>>", "O aparelho apresentava as seguintes chamadas:")
                        oWord.geraChamadas(tbl, 7)
                    End If
                Else
                    oWord.FindAndReplacement("<<textoChamadasRealizadasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")

                End If

                tbl = New System.Data.DataTable
                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR CHAMADAS RECEBIDAS REGISTRADAS NO APARELHO
                ''------------------------------------------------------------------------

                tbl = generica.returnDataTableCelular(txtXMLTelefone.Text, "Received Calls", 10)
                pb.stepBarra(5, "Inserindo dados das chamadas recebidas encontradas no aparelho")

                If tbl.Rows.Count <= 0 Then
                    oWord.FindAndReplacement("<<textoChamadasRecebidas>>", "A lista das chamadas realizadas encontrava-se vazia.")
                Else
                    oWord.FindAndReplacement("<<textoChamadasRecebidas>>", "O aparelho apresentava as seguintes chamadas:")
                    oWord.geraChamadas(tbl, 8)
                End If
                tbl = New System.Data.DataTable

                If Not txtXMLChip.Text.Equals(String.Empty) Then
                    tbl = generica.returnDataTableCelular(txtXMLChip.Text, "Received Calls", 10)
                    pb.stepBarra(5, "Inserindo dados das chamadas recebidas encontradas no chip")
                    If tbl.Rows.Count <= 0 Then
                        oWord.FindAndReplacement("<<textoChamadasRecebidasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")
                    Else
                        oWord.FindAndReplacement("<<textoChamadasRecebidasChip>>", "O aparelho apresentava as seguintes chamadas:")
                        oWord.geraChamadas(tbl, 9)
                    End If
                Else
                    oWord.FindAndReplacement("<<textoChamadasRecebidasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")
                End If
                tbl = New System.Data.DataTable
                ''------------------------------------------------------------------------
                '' CHAMA EVENTO PARA POPULAR CHAMADAS PERDIDAS REGISTRADAS NO APARELHO
                ''------------------------------------------------------------------------

                tbl = generica.returnDataTableCelular(txtXMLTelefone.Text, "Missed Calls", 10)
                pb.stepBarra(5, "Inserindo dados das chamadas perdidas encontradas no aparelho")
                If tbl.Rows.Count <= 0 Then
                    oWord.FindAndReplacement("<<textoChamadasPerdidas>>", "A lista das chamadas realizadas encontrava-se vazia.")
                Else
                    oWord.FindAndReplacement("<<textoChamadasPerdidas>>", "O aparelho apresentava as seguintes chamadas:")
                    oWord.geraChamadas(tbl, 10)
                End If
                tbl = New System.Data.DataTable

                If Not txtXMLChip.Text.Equals(String.Empty) Then
                    tbl = generica.returnDataTableCelular(txtXMLChip.Text, "Missed Calls", 10)
                    pb.stepBarra(5, "Inserindo dados das chamadas perdidas encontradas no chip")
                    If tbl.Rows.Count <= 0 Then
                        oWord.FindAndReplacement("<<textoChamadasPerdidasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")
                    Else
                        oWord.FindAndReplacement("<<textoChamadasPerdidasChip>>", "O aparelho apresentava as seguintes chamadas:")
                        oWord.geraChamadas(tbl, 11)
                    End If
                Else
                    oWord.FindAndReplacement("<<textoChamadasPerdidasChip>>", "A lista das chamadas realizadas encontrava-se vazia.")
                End If
                tbl = New System.Data.DataTable
                pb.stepBarra(5, "Finalizando...")
                oWord.FindAndReplacement("<<involucro>>", txtinvolucro.text)
                oWord.criaAssinatura(ucPreambulo)
                oWord.Save()
                oWord.Quit()
                oWord = Nothing
                pb.stepBarra(10)
                '--------------------------------------------------------------------------------------------
                ' CHAMA ROTINA PARA LIMPAR CAMPOS DO CONTROLE E DO DATAGRID VIEW
                '-----------------------------------------------------------------------------------------------------------------------

            Catch exc As Exception
                generica.encerraProcessosWord()
                generica.gravaErro(exc)
                erroNivel = 2
                Exit Sub
            End Try
        Else
            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub
    Private Sub habilita(ByVal habilita As Boolean, _
                         Optional ByVal habilitaBarra As Boolean = Nothing, _
                         Optional ByVal habilitaVerWord As Boolean = Nothing, _
                         Optional ByVal habilitaNatureza As Boolean = False, _
                         Optional ByVal habilitaPainel As Boolean = False)

        ucPreambulo.btnVerWord.Visible = habilitaVerWord
        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        pnlItens.Enabled = habilitaPainel
        ucPreambulo.selecionaIdTipoPericia = ucPreambulo.ID_TIPO_PERICIA
        ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
        ucPreambulo.txtDataExame.Enabled = False
        ucPreambulo.pnlNatureza.Enabled = habilitaNatureza
        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If
    End Sub

    Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim isOk As Boolean = False
        Try
            If (generica.validaCampos(ucPreambulo)) Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub


    Private Sub btnLimpa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ucPreambulo.limparCampos()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub

    Private Sub limpaCampos()
        Try
            For Each controle In pnlItens.Controls
                If TypeOf (controle) Is TextBox Then
                    CType(controle, TextBox).Text = String.Empty
                    erro.SetError(controle, String.Empty)
                End If

                If TypeOf (controle) Is MaskedTextBox Then
                    CType(controle, MaskedTextBox).Text = String.Empty
                    erro.SetError(controle, String.Empty)
                End If

            Next

            cmbEstado.SelectedIndex = -1
            cmbOperadora.SelectedIndex = -1
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
     

    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            habilita(True, False, False, False, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo
        Try
            For Each controle In pnlItens.Controls
                erro.SetError(controle, String.Empty)
            Next

            'COPIAR ESTE TRECHO
            Dim regBO As New registroBO
            Dim registroVOTemp As New registroVO
            Dim novoRegistro As Integer = 0
            registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

            If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                novoRegistro = regBO.getUltimoRegistro
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                ucPreambulo.getNumeroLaudo = novoRegistro

            ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                Exit Sub
            End If

            'FIM DO TRECHO

            If (generica.validaCampos(ucPreambulo)) Then
                If validaCampos() Then

                    pb.Visible = True
                    generica.salvaPreambulo(ucPreambulo)
                    geraLaudo()
                    If erroNivel > 0 Then
                        If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                            MsgBox("O sistema recuperou de um erro que impediu que o registro fosse inserido com sucesso no sistema. O laudo também não foi gerado. Entre em contato com o administrador do sistema.")
                            erroNivel = 0
                            ucPreambulo.btnNovoLaudo.PerformClick()
                        End If

                    Else
                        habilita(False, False, True, False, False)
                    End If

                End If
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Private Function validaCampos() As Boolean
        Dim ok As Boolean = False

        If txtXMLChip.Text.Length = 0 And txtXMLTelefone.Text.Length = 0 Then

            erro.SetError(txtXMLTelefone, "Informe pelo menos o caminho de um arquivo XML.")

            ok = False
        Else
            ok = True
        End If
        Try

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
        Return ok

    End Function
    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try

            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            habilita(True, False, False, False, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try

            Dim itens_avaliacaoBO As New itens_avaliacaoBO

            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)


            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False, , True, False)

            Else
                registroGlobal.IDregistroLock = registroGlobal.registroPincipal.ID_REGISTRO

                habilita(True, False, False, False, True)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnXmlTelefone_Click(sender As Object, e As EventArgs) Handles btnXmlTelefone.Click
        Try
            Dim diretorio As String = "c:\"
            ofdDiretorio.InitialDirectory = diretorio
            ofdDiretorio.ShowDialog()
            txtXMLTelefone.Text = ofdDiretorio.FileName
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnXmlChip_Click(sender As Object, e As EventArgs) Handles btnXmlChip.Click
        Try

            Dim diretorio As String = "c:\"
            ofdDiretorio.InitialDirectory = diretorio
            ofdDiretorio.ShowDialog()
            txtXMLChip.Text = ofdDiretorio.FileName
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
End Class